home *** CD-ROM | disk | FTP | other *** search
-
- /*
- Copyright 1992 - John K. Humkey
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <conio.h>
- #include <string.h>
- #include <dos.h>
- #include "timespan.h"
- #include "timpoint.h"
-
- extern int __european;
-
- void astro_to_date(int *year, int *month, int *day, long *ast);
- void date_to_astro(int *year, int *month, int *day, long *ast);
- void time_to_astro(int *hour, int *mins, int *sec, int *millisec, long *ast);
- void astro_to_time(int *hour, int *mins, int *sec, int *millisec, long *ast);
-
- //
- // TIMEPOINT::OPERATOR +
- //
- //
- timepoint operator + ( timepoint &tdone, timespan &tdtwo )
- {
- timepoint temptd;
- long dx,tx;
-
- tx = tdone.msecval + tdtwo.msecval;
- dx = tdone.dateval + tdtwo.daysval;
- dx += tx / (24L * 60L * 60L * 1000L);
- tx %= (24L * 60L * 60L * 1000L);
- temptd.setdt(dx,tx);
-
- return temptd;
- }
-
- //
- // TIMEPOINT::OPERATOR -
- //
- //
- timepoint operator - ( timepoint &tdone, timespan &tdtwo )
- {
- timepoint temptd, tanother;
- long dx,tx;
-
- if ( (tdone.dateval < tdtwo.daysval) ||
- ((tdone.dateval == tdtwo.daysval) && (tdone.msecval < tdtwo.msecval))) {
- temptd.setdt(0L,0L);
- }
- else {
- if (tdone.msecval < tdtwo.msecval) {
- tanother.dateval = tdone.dateval - 1;
- tanother.msecval = tdone.msecval + (24L * 60L * 60L * 1000);
- }
- else {
- tanother = tdone;
- }
- tx = tanother.msecval - tdtwo.msecval;
- dx = tanother.dateval - tdtwo.daysval;
- dx += tx / (24L * 60L * 60L * 1000L);
- tx %= (24L * 60L * 60L * 1000L);
- temptd.setdt(dx,tx);
- }
-
- return temptd;
- }
-
- //
- // TIMEPOINT::OPERATOR -
- //
- //
- timespan operator - ( timepoint &tdone, timepoint &tdtwo )
- {
- timespan temptd;
- timepoint tanother;
- long dx,tx;
-
- if ( (tdone.dateval < tdtwo.dateval) ||
- ((tdone.dateval == tdtwo.dateval) && (tdone.msecval < tdtwo.msecval))) {
- temptd.setdt(0L,0L);
- }
- else {
- if (tdone.msecval < tdtwo.msecval) {
- tanother.dateval = tdone.dateval - 1;
- tanother.msecval = tdone.msecval + (24L * 60L * 60L * 1000);
- }
- else {
- tanother = tdone;
- }
- tx = tanother.msecval - tdtwo.msecval;
- dx = tanother.dateval - tdtwo.dateval;
- dx += tx / (24L * 60L * 60L * 1000L);
- tx %= (24L * 60L * 60L * 1000L);
- temptd.setdt(dx,tx);
- }
-
- return temptd;
- }
-
- //
- // TIMEPOINT::OPERATOR +=
- //
- //
- timepoint operator += ( timepoint &tdone, timespan &tdtwo )
- {
- long dx,tx;
-
- tx = tdone.msecval + tdtwo.msecval;
- dx = tdone.dateval + tdtwo.daysval;
- dx += tx / (24L * 60L * 60L * 1000L);
- tx %= (24L * 60L * 60L * 1000L);
- tdone.setdt(dx,tx);
-
- return tdone;
- }
-
- //
- // TIMEPOINT::OPERATOR -=
- //
- //
- timepoint operator -= ( timepoint &tdone, timespan &tdtwo )
- {
- timepoint tanother;
- long dx,tx;
-
- if ( (tdone.dateval < tdtwo.daysval) ||
- ((tdone.dateval == tdtwo.daysval) && (tdone.msecval < tdtwo.msecval))) {
- tdone.setdt(0L,0L);
- }
- else {
- if (tdone.msecval < tdtwo.msecval) {
- tanother.dateval = tdone.dateval - 1;
- tanother.msecval = tdone.msecval + (24L * 60L * 60L * 1000);
- }
- else {
- tanother = tdone;
- }
- tx = tanother.msecval - tdtwo.msecval;
- dx = tanother.dateval - tdtwo.daysval;
- dx += tx / (24L * 60L * 60L * 1000L);
- tx %= (24L * 60L * 60L * 1000L);
- tdone.setdt(dx,tx);
- }
-
- return tdone;
- }
-
- //
- // TIMEPOINT::OPERATOR <
- //
- //
- int operator < ( timepoint &tdone, timepoint &tdtwo )
- {
- if ( (tdone.dateval < tdtwo.dateval) ||
- ((tdone.dateval == tdtwo.dateval) && (tdone.msecval < tdtwo.msecval)))
- return 1;
- else
- return 0;
- }
-
- //
- // TIMEPOINT::OPERATOR >
- //
- //
- int operator > ( timepoint &tdone, timepoint &tdtwo )
- {
- if ( (tdone.dateval > tdtwo.dateval) ||
- ((tdone.dateval == tdtwo.dateval) && (tdone.msecval > tdtwo.msecval)))
- return 1;
- else
- return 0;
- }
-
- //
- // TIMEPOINT::OPERATOR ==
- //
- //
- int operator == ( timepoint &tdone, timepoint &tdtwo )
- {
- if ( (tdone.dateval == tdtwo.dateval) &&
- (tdone.msecval == tdtwo.msecval) )
- return 1;
- else
- return 0;
- }
-
- //
- // TIMEPOINT::OPERATOR !=
- //
- //
- int operator != ( timepoint &tdone, timepoint &tdtwo )
- {
- if ( (tdone.dateval != tdtwo.dateval) ||
- (tdone.msecval != tdtwo.msecval) )
- return 1;
- else
- return 0;
- }
-
- //
- // TIMEPOINT::OPERATOR <=
- //
- //
- int operator <= ( timepoint &tdone, timepoint &tdtwo )
- {
- if (((tdone.dateval == tdtwo.dateval) &&
- (tdone.msecval == tdtwo.msecval) ) ||
- ((tdone.dateval < tdtwo.dateval) ||
- ((tdone.dateval == tdtwo.dateval) && (tdone.msecval < tdtwo.msecval))))
- return 1;
- else
- return 0;
- }
-
- //
- // TIMEPOINT::OPERATOR >=
- //
- //
- int operator >= ( timepoint &tdone, timepoint &tdtwo )
- {
- if (((tdone.dateval == tdtwo.dateval) &&
- (tdone.msecval == tdtwo.msecval) ) ||
- ((tdone.dateval > tdtwo.dateval) ||
- ((tdone.dateval == tdtwo.dateval) && (tdone.msecval > tdtwo.msecval))))
- return 1;
- else
- return 0;
- }
-
- //
- // TIMEPOINT::TIMEPOINT
- //
- //
- timepoint::timepoint(int year, int month, int day,
- int hour, int minute, int second,
- int millisecond)
- {
- date_to_astro(&year,&month,&day,&dateval);
- time_to_astro(&hour,&minute,&second,&millisecond,&msecval);
- }
-
- //
- // TIMEPOINT::~TIMEPOINT
- //
- // Destructor, waits for keypress on screen, closes files for other modes.
- //
- timepoint::~timepoint()
- {
- }
-
- //
- // TIMEPOINT::PRINT
- //
- // Prints internal values of a timepoint variable.
- //
- void timepoint::print()
- {
- int year, month, day, hour, mins, sec, millisec;
-
- astro_to_date(&year,&month,&day,&dateval);
- astro_to_time(&hour,&mins,&sec,&millisec,&msecval);
- printf("%04d/%02d/%02d %02d:%02d:%02d.%d\n",
- year,month,day,hour,mins,sec,millisec);
- }
-
- //
- // TIMEPOINT::MDY2W
- //
- // Prints internal values of a timepoint variable.
- //
- char* timepoint::mdy2w(char *str)
- {
- int year, month, day;
-
- astro_to_date(&year,&month,&day,&dateval);
- if (__european) sprintf(str,"%02d/%02d/%02d",day,month,year%100);
- else sprintf(str,"%02d/%02d/%02d",month,day,year%100);
- return( str );
- }
-
- //
- // TIMEPOINT::MDY4W
- //
- // Prints internal values of a timepoint variable.
- //
- char* timepoint::mdy4w(char *str)
- {
- int year, month, day;
-
- astro_to_date(&year,&month,&day,&dateval);
- if (__european) sprintf(str,"%02d/%02d/%04d",day,month,year);
- else sprintf(str,"%02d/%02d/%04d",month,day,year);
- return( str );
- }
-
- //
- // TIMEPOINT::MDY2
- //
- // Prints internal values of a timepoint variable.
- //
- char* timepoint::mdy2(char *str)
- {
- int year, month, day;
-
- astro_to_date(&year,&month,&day,&dateval);
- if (__european) sprintf(str,"%02d%02d%02d",day,month,year%100);
- else sprintf(str,"%02d%02d%02d",month,day,year%100);
- return( str );
- }
-
- //
- // TIMEPOINT::MDY4
- //
- // Prints internal values of a timepoint variable.
- //
- char* timepoint::mdy4(char *str)
- {
- int year, month, day;
-
- astro_to_date(&year,&month,&day,&dateval);
- if (__european) sprintf(str,"%02d%02d%04d",day,month,year);
- else sprintf(str,"%02d%02d%04d",month,day,year);
- return( str );
- }
-
- //
- // TIMEPOINT::Y2MD
- //
- // Prints internal values of a timepoint variable.
- //
- char* timepoint::y2md(char *str)
- {
- int year, month, day;
-
- astro_to_date(&year,&month,&day,&dateval);
- sprintf(str,"%02d%02d%02d",year%100,month,day);
- return( str );
- }
-
- //
- // TIMEPOINT::Y4MD
- //
- // Prints internal values of a timepoint variable.
- //
- char* timepoint::y4md(char *str)
- {
- int year, month, day;
-
- astro_to_date(&year,&month,&day,&dateval);
- sprintf(str,"%04d%02d%02d",year,month,day);
- return( str );
- }
-
- //
- // TIMEPOINT::SETDT
- //
- // Sets internal values of a timepoint variable.
- //
- void timepoint::setdt(long dx, long tx)
- {
- dateval = dx;
- msecval = tx;
- }
-
-
-